package com.ld.control.business.task.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ld.control.business.task.model.TaskExampleModel;
import com.ld.control.business.task.vo.req.TaskExampleReqVo;
import com.ld.control.business.task.vo.req.TaskExampleSearchReqVo;
import com.ld.control.business.task.vo.resp.TaskExampleRespVo;

import java.util.List;

/**
 * <p>
 * 任务实例表 服务类
 * </p>
 *
 * @author wangfeng
 * @since 2024-05-14
 */
public interface TaskExampleService extends IService<TaskExampleModel> {

    /**
     * 新增任务实例
     * @param reqVo
     */
    void add(TaskExampleReqVo reqVo);

    /**
     * 分页搜索任务实例列表
     * @param reqVo
     * @return
     */
    IPage<TaskExampleRespVo> getPageList(TaskExampleSearchReqVo reqVo);


    /**
     * 根据状态搜索任务列表
     * @param statusList
     * @return
     */
    IPage<TaskExampleRespVo> getPageListByStatusList(List<Integer> statusList, Integer current, Integer size);


    /**
     * 修改任务实例状态
     * @param id
     */
    void updateStatus(Long id, Integer status);


    /**
     * 开始运行任务实例
     * @param id
     */
    void runTaskExample(Long id);

    /**
     * 暂停任务
     * @param id
     */
    void pause(Long id);

    /**
     * 恢复任务
     * @param id
     */
    void restore(Long id);

    /**
     * 终止任务
     * @param id
     */
    void termination(Long id);

    /**
     * 计算预估时间
     */
    void generateEstimatedTime();

    List<TaskExampleRespVo> getTaskDataSelectList();

    /**
     * 获取某种状态下所有的任务数量
     * @param status
     * @return
     */
    Long getTaskExampleCountByStatus(Integer status);
}
